1. Field of the Invention
This invention relates generally to computer systems and associated hardware that are connected to a network, and particularly to methods and apparatuses for programming firmware of the associated hardware over the network.
2. Description of the Related Art
Computer systems can incorporate various components, including a central processing unit (CPU), random access memory (RAM), a hard drive, and peripheral devices. Computer systems can also incorporate hardware devices, such as host adapter cards (also known as controllers) that have host adapter integrated circuit (IC) chips and that have programmable read-only memory (ROM) circuitry, collectively termed a ROM. Such ROMs can be set, or programmed, through the use of software that is external to the ROM, such that the ROM then performs in a particular desired way, like hardware. Once so programmed, the ROM functions as would hardware, but because it can be deprogrammed and/or reprogrammed, it is considered to be firmware. As is well known in the art, particular forms of ROM include programmable ROM (PROM), electrically programmable ROM (EPROM), and electrically erasable and programmable ROM (EEPROM) which are sometimes referred to as flash memory. The firmware programming can define operational characteristics of the hardware device, such as a BIOS of a SCSI adapter card. Information regarding the use of flash memory and firmware upgrading can be found in "ASUS PCI-DA2100--PCI to SCSI Disk Array Controller User's Manual--Hardware Installation," ASUSTeK Computer, Inc., 1996, which is incorporated herein by reference.
The programming of such devices is performed by sending particular signals, according to a programming file, to the hardware device, thereby setting particular electrical pathways and configuring particular functionalities within the ROM. The particular signals may be in the form of operational commands, or data bits. Before distribution to consumers or incorporation into a user's local computer system, a hardware device provider can program the ROM, which can be accomplished on a special programming board or by other typical methods known to those skilled in the art. Alternatively, the initial programming of the firmware can be performed after it is installed with the user's local computer system. In addition, while some ROMs can be programmed only once, other hardware devices have reprogrammable ROMs, allowing the user to incorporate new revisions, bugfixes, or updates into the hardware device.
Understanding the programming of a ROM is facilitated by the depiction of a typical local computer system 102 in FIG. 1. Whether programmed for the first time or subsequently, or before or after incorporation with the user's local computer system 102, the ROM 104 of a local hardware device 106 (e.g., a host adapter card) is typically programmed using a programming file that is resident on the same computer system as where the firmware is incorporated. Specifically, the programming file is downloaded from a storage media 108 to some form of memory 110 within the user's local computer system 102, such as random access memory (RAM). A programming application, also downloaded to the user's local computer system memory 110, then uses the programming file to program or reprogram the ROM 104. The storage media 108, can be a readable data storage device such as a floppy disk, compact disc (CD), optical disk, or tape, among others. Alternatively, the programming file and/or application can be downloaded from a remote computer system to which the user's local computer system is connected through a network.
Unfortunately, such programming methods that are typically available to the user may be time consuming and difficult to utilize. For example, if a storage media 108 is used, the user must obtain the storage media itself by either physically procuring or by ordering and then waiting for delivery of the storage media that contains the programming file and programming application. Further, such a method requires that the user's computer system have a device 112 that is capable of reading the storage media. If, on the other hand, the user downloads the file from a remote system through a network, such a download may take a large amount of time.
Additionally, whether using storage media or downloading across a network, a particular programming file and/or programming application may be needed to accommodate the current configuration of the user's local computer system. Therefore, the user must accurately determine various aspects of the current configuration. Such aspects may include the type of operating system (OS) being used on the user's local computer system, or the revision number of the current firmware on a local hardware device that is to be reprogrammed. In addition to the time required to communicate this information, the correct information may not be readily available to the user, and therefore the user may be significantly delayed in programming the local hardware device while the user determines the correct information. Furthermore, any errors in the configuration information used by the user to select a programming file and/or programming application can result in no programming or incorrect programming of the local hardware device, which could render the local hardware device at least temporarily unusable.
Therefore, there is a need for improved techniques for programming programmable hardware devices. In particular, a method and apparatus for more efficiently, more quickly, and more accurately programming programmable hardware devices is needed.